package ar.edu.utn.frba.tacs.warnes.services;

import static junit.framework.Assert.assertEquals;

import org.apache.cxf.jaxrs.client.WebClient;
import org.junit.Before;
import org.junit.Test;

import ar.edu.utn.frba.tacs.warnes.pojos.AutoPojo;
import ar.edu.utn.frba.tacs.warnes.pojos.AutoPojoList;
import ar.edu.utn.frba.tacs.warnes.pojos.PiezaPojoList;
import ar.edu.utn.frba.tacs.warnes.utils.ConstantesWarnes;

/**
 * ACORDARSE DE LEVANTAR LA APP EN JETTY!!
 * 
 * @author Diego
 * 
 */
public class AutosRestTestCase {
	WebClient wc;

	@Before
	public void inicializaciones() {
		wc = WebClient.create(ConstantesWarnes.URL_AUTOS_REST);
	}

	@Test
	public void testAutoPorId() {
		AutoPojo primero = wc.path("/id/1").get(AutoPojo.class);
		wc.back(true);// Le saca el path que le acabo de agregar
		AutoPojo segundo = wc.path("/id/2").get(AutoPojo.class);
		wc.back(true);// Le saca el path que le acabo de agregar
		AutoPojo tercero = wc.path("/patente/auto-123").get(AutoPojo.class);

		assertEquals("auto-789", primero.getPatente());
		assertEquals("auto-456", segundo.getPatente());
		assertEquals("auto-123", tercero.getPatente());
	}

	@Test
	public void testAutosList() {
		AutoPojoList autos = wc.path("/autos").get(AutoPojoList.class);

		assertEquals(3, autos.getAutos().size());
	}

	@Test
	public void testAutoDelete() {
		wc.path("/borrar/auto-123").delete();

		wc.back(true);// Le saca el path que le acabo de agregar
		AutoPojoList autos = wc.path("/autos").get(AutoPojoList.class);
		assertEquals(2, autos.getAutos().size());
	}

	@Test
	public void testAutoPut() {
		wc.path("/agregar/auto-123").post(null);

		wc.back(true);// Le saca el path que le acabo de agregar
		AutoPojoList autos = wc.path("/autos").get(AutoPojoList.class);
		assertEquals(3, autos.getAutos().size());

		wc.back(true);// Le saca el path que le acabo de agregar
		AutoPojo tercero = wc.path("/patente/auto-123").get(AutoPojo.class);
		assertEquals("auto-123", tercero.getPatente());
	}

	@Test
	public void testPiezasDelAutoPorId() {
		PiezaPojoList piezas = wc.path("/id/1/piezas").get(PiezaPojoList.class);

		assertEquals(1, piezas.getPiezas().size());
	}
}
